﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionePolveriLib.BL;
using GestionePolveriLib.Facades;
using GestionePolveriLib.Facades.Extensions;

namespace GestionePolveriLib.Utilities
{
    public class FilterComboBoxHelper
    {
        public static void SetupPolveriComboBox(ComboBox control)
        {
            PolvereFacade pf = new PolvereFacade();
            List<Polvere> data = pf.GetPolveriForFilter();

            if (data != null)
            {
                data.Insert(0, new Polvere() { CodicePolvere = "Seleziona una polvere", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "codicepolvere";
                control.ValueMember = "id";
                control.DataSource = data;
            }
        }

        public static void SetupPolveriComboBoxCS(ComboBox control)
        {
            PolvereFacade pf = new PolvereFacade();
            List<Polvere> data = pf.GetPolveriForCS();

            if (data != null)
            {
                data.Insert(0, new Polvere() { CodicePolvere = "Seleziona una polvere", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "codicepolvere";
                control.ValueMember = "id";
                control.DataSource = data;
            }
        }
        
        public static void SetupLottiComboBox(ComboBox control)
        {
            LottoFacade lf = new LottoFacade();
            List<Lotto> m_data = lf.GetLottiForFilter();
            
            if (m_data != null)
            {
                m_data.Insert(0, new Lotto() { CodLotto = "Selezionare un lotto", IDLotto = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "CodLotto";
                control.ValueMember = "IDLotto";
                control.DataSource = m_data;
            }
        }

        public static void SetupCausaliScaricoComboBox(ComboBox control)
        {
            CausaliScaricoFacade lf = new CausaliScaricoFacade();
            List<CausaleScarico> m_data = lf.GetAllI();

            if (m_data != null)
            {
                m_data.Insert(0, new CausaleScarico() { Descrizione = "Selezionare una causale", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "Descrizione";
                control.ValueMember = "ID";
                control.DataSource = m_data;
            }
        }

        public static void SetupFornitoriComboBox(ComboBox control)
        {
            FornitoriFacade ff = new FornitoriFacade();
            List<Fornitore> m_data = ff.GetFornitoriForFilter();
            
            if (m_data != null)
            {
                m_data.Insert(0, new Fornitore() { Descrizione = "Seleziona un fornitore", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "Descrizione";
                control.ValueMember = "ID";
                control.DataSource = m_data;
            }
        }

        public static void SetupColoriComboBox(ComboBox control)
        {
            ColoriFacade cf = new ColoriFacade();
            List<Colore> m_data = cf.GetColoriForFilter();

            if (m_data != null)
            {
                m_data.Insert(0, new Colore() { CodiceColore = "Seleziona un colore", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "CodiceColore";
                control.ValueMember = "ID";
                control.DataSource = m_data;
            }
        }

        public static void SetupFamigliaComboBox(ComboBox control)
        {
            FamigliaColoriFacade cf = new FamigliaColoriFacade();
            List<FamigliaColore> m_data = cf.GetAll();

            if (m_data != null)
            {
                m_data.Insert(0, new FamigliaColore() { Descrizione = "Seleziona una famiglia", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "Descrizione";
                control.ValueMember = "ID";
                control.DataSource = m_data;
            }
        }

        public static void SetupImpiantiComboBox(ComboBox control)
        {
            ImpiantoFacade pf = new ImpiantoFacade();
            List<Impianto> m_data = pf.GetImpianti();

            if (m_data != null)
            {
                m_data.Insert(0, new Impianto() { Nome = "Seleziona un impianto", ID = -1 });

                control.DataSource = null;
                control.Items.Clear();
                control.DisplayMember = "Nome";
                control.ValueMember = "ID";
                control.DataSource = m_data;
            }
        }
    }
}
